/* 
主线程：宏任务
宏任务：setTimeout，js代码   console.log()
微任务：Promise.then()
代码执行顺序：先走主线程代码
*/
// setTimeout(()=>{
//   // 进入任务队列
//   new Promise(resolve =>{
//       resolve();
//   }).then(()=>{
//       console.log('test');
//   });
//   console.log(4);
// },1);
// new Promise(resolve => {
//   resolve();
//   console.log(1)
// }).then( () => {
//   console.log(3);
//   Promise.resolve().then(() => {
//       console.log('before timeout');
//   }).then(() => {
//       Promise.resolve().then(() => {
//         console.log('also before timeout')
//       })
//   })
// })
// console.log(2);
//  1 / 2 / 3 / before timeout  / also before timeout /4  /  test

// setTimeout(function(){
//   console.log(1);
// });
// new Promise(function(resolve){
//   console.log(2);
//   resolve();
// }).then(function(){
//   console.log(3);
// }).then(function(){
//   console.log(4)
// });
// console.log(5);
// // 2.5,3,4,1

console.log(1)
setTimeout(function () {
  console.log(2)

  Promise.resolve().then(() => {
    console.log(6)
  })
}, 0)
const p = new Promise((resolve, reject) => {
  console.log(7);
  resolve(4)
})
console.log(5)
p.then((data) => {
  console.log(data)
})
console.log(3)

setTimeout(function () {
  console.log(9)

  Promise.resolve().then(() => {
    console.log(8)
  })
}, 0)
//1,7,5,3,4,2,6,9,8
